home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 5
/
Apprentice-Release5.iso
/
Source Code
/
SDKs
/
Now Utilities Plug Ins 6.0
/
API Stuff
/
Now Shortcuts Plug Ins ƒ
/
File Locking ƒ
/
Main.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-03-07
|
3KB
|
120 lines
// Lock File Plug In for Now Utilities 6.0
// © Now Software, Inc.
//
// written by hac
// 3/4/96
//
// This module installs three grouped menu items in the Now Tabs popup:
// - Lock
// - Unlock
#include "Main.h"
#define kLock 2
#define kUnlock 3
pascal void main(PlugInInformation *plugInInformation)
{
plugInInformation->version = kPlugInInformationVersionOne;
plugInInformation->plugInType = kFileLockingPlugInType;
plugInInformation->PrepareMenu = &PrepareMenu;
plugInInformation->HandleMenuItemSelected = &HandleMenuItemSelected;
}
pascal void PrepareMenu(InstantAccessInformation *information, short asPreview)
{
MenuSelectResultStructure mrs;
MenuItemInformation menuItem;
// add a divider line above
menuItem.version = kMenuItemInformationVersionOne;
menuItem.classification = kMiscellaneousClassification;
menuItem.type = kDividerMenuItemType;
menuItem.id = 1;
menuItem.enabled = false;
menuItem.style = 0;
menuItem.mark = 0;
menuItem.hasSubMenu = FALSE;
menuItem.subMenu = nil;
menuItem.refCon = 0;
menuItem.owningPlugInType = kFileLockingPlugInType;
(*information->AddMenuItem)(&menuItem);
// add the lock menu item
BlockMove("\pLock", menuItem.text, kMenuItemTextSize);
menuItem.type = kTextMenuItemType;
menuItem.id = 2;
menuItem.enabled = true;
(*information->AddMenuItem)(&menuItem);
// add the unlock menu item
BlockMove("\pUnlock", menuItem.text, kMenuItemTextSize);
menuItem.type = kTextMenuItemType;
menuItem.id = 3;
menuItem.enabled = true;
(*information->AddMenuItem)(&menuItem);
// add a divider line below
menuItem.type = kDividerMenuItemType;
menuItem.id = 5;
menuItem.enabled = false;
(*information->AddMenuItem)(&menuItem);
}
pascal void CleanUpAfterMenuSelect(InstantAccessInformation *information, short asPreview)
{
//hmmmm....
}
pascal void HandleMenuItemSelected(InstantAccessInformation *information, MenuItemInformation *menuItem)
{
OSErr err = noErr;
short index;
short itemCount;
FSSpec spec;
void* reference;
// count the number of selected items
itemCount = (*information->CountSelectedItems)();
// index through each one
for (index = 0; index < itemCount; index++) {
// get the item reference
reference = (*information->GetNthSelectedItemReference)(index);
// get the file spec
(*information->GetSelectedItemFileSpec)(reference, &spec);
switch (menuItem->id) {
case kLock:
err = FSpSetFLock(&spec);
break;
case kUnlock:
err = FSpRstFLock(&spec);
break;
otherwise:
break;
}
}
error:;
}